// basicnpc.txt
// A very simple, naive text. Creature attacks anything it hates nearby.
// Once it has won, it returns to its home.
// Memory Cells:
//   Cell 0 - How creature moves.
//     0 - If 0, wander randomly. 
//     1 - Stands still until a target appears.
//     2 - Completely immobile, even if target appears.
//   Cell 1,2 - Stuff done flag. If both 0, nothing. Otherwise when this 
//     is killed, set to 1. (Example: If cell 1 is 3 and cell 2 is 5, when
//     creature is killed, sets SDF(3,5) to 1.)
//   Cell 3 - Dialogue node to start with if talked to. if left at 0, this
//     character doesn't talk.

begincreaturescript;

variables;

short i,target,rctx,rcty,bmessage;

body;

beginstate INIT_STATE;
	if (get_memory_cell(0) == 2)
		set_mobility(ME,0);
	break;

beginstate DEAD_STATE;

	inc_flag(4,0,1);
	if(get_flag(4,0) >= 25){
		rctx = 11;
		while(rctx <= 37){
			rcty = 18;
			while(rcty <= 32){
				if(get_terrain(rctx,rcty) == 472){
					set_terrain(rctx,rcty,0);
				}
				rcty = (rcty + 1);
			}
			rctx = (rctx + 1);
		}
		reset_dialog();
		add_dialog_str(0,"The last nephil falls.  Unfortunately, the remainder of your group is also very much dead.",0);
		if(party_size() > 1)
			add_dialog_str(1,"You are the only members of your outfit still alive.  This puts you in a precarious position- you have to make a group decision, what with Captain Biggs dead as such.",0);
		if(party_size() == 1)
			add_dialog_str(1,"You are the only member of your outfit still alive.  This puts you in a precarious position- you have to make an individual choice, what with Captain Biggs dead as such.",0);
		add_dialog_str(2,"You could go back to the Empire liason and demand more troops to be sent to the valley.  There's lots of troops in the nearby province of Rayguard.",0);
		add_dialog_str(3,"On the other hand, that route would be fraught with dangers.  Since you're alone, and the nephils likely know how much damage you could do if you managed to successfully report back, they'd be anxious to kill you quickly.  Which would be easy.",0);
		add_dialog_str(4,"Plus, the fortress may fall to the nephils while you're gone anyway, making things far more difficult for Rayguard troops to not be defeated.",0);
		add_dialog_str(5,"The choice is yours, at any rate.",0);
		bmessage = run_dialog(1);

		award_party_xp(1000,100);
	}

break;

beginstate START_STATE; 
	// if I have a target for some reason, go attack it
	if (target_ok()) {
		if (dist_to_char(get_target()) <= 16)
			set_state(3);
			else set_target(ME,-1);
		}
	
	// Look for a target, attack it if visible
	if (select_target(ME,8,0)) {
		do_attack();
		set_state(3);
		}
		
	// Have I been hit? Strike back!
	if (who_hit_me() >= 0) {
		set_target(ME,who_hit_me());
		do_attack();
		set_state(3);
		}
		
	// Otherwise, just peacefully move around. Go back to start, if I'm too far
	// from where I started.
	if ((my_dist_from_start() >= 6) || ((my_dist_from_start() > 0) && (get_memory_cell(0) > 0))) {
		if (get_ran(1,1,100) < 40) 
			return_to_start(ME,1);
		}
		else if (get_memory_cell(0) == 0) {
			fidget(ME,25);
			}

	// if we're in combat and the above didn't give me anything to do, just
	// stop now. Otherwise, game will keep running script, and that eats up CPU time.
	if (am_i_doing_action() == FALSE)
		end_combat_turn();
break;

beginstate 3; // attacking
	if (target_ok() == FALSE)
		set_state(START_STATE);
	do_attack();
break;

beginstate TALKING_STATE;
	if (get_memory_cell(3) == 0) {
		print_str("Talking: It doesn't respond.");
		end();
		}
	begin_talk_mode(get_memory_cell(3));
break;